package com.zerdoor.dao;

import java.util.List;
import java.util.Map;

/**
 * Created by zhongjieyu on 2015/1/6.
 */
public interface ItemStageDao {

    /**
     * 根据合同ID查询阶段数据信息
     * @param contractId 合同ID
     * @return
     * @throws Exception
     */
    List<Map<String,String>> findStageByContractId(int contractId) throws Exception;


    /**
     * 上传阶段附件，根据阶段ID修改阶段附件数据
     * @param param 参数
     * @throws Exception
     */
    void updateStageDeliverableById(Map<String,String> param) throws Exception;

    /**
     * 根据阶段ID查询该阶段所有费用
     * @param stageId
     * @return
     * @throws Exception
     */
    Map findStageCostByStageId(int stageId) throws Exception;

    /**
     * 根据阶段ID查询阶段数据
     * @param stageId
     * @return
     * @throws Exception
     */
    Map findItemStageByStageId(int stageId) throws Exception;

    /**
     * 根据阶段ID修改阶段状态
     * @param param
     * @throws Exception
     */
    void updateItemStageByStageId(Map param) throws Exception;

    /**
     * 根据任务订单ID修改任务订单剩余预存金额
     * @param param
     * @throws Exception
     */
    void updateOrderTaskPrestoreSurplus(Map param) throws Exception;

    /**
     * 更新推广费表
     * @param stageId
     * @throws Exception
     */
    void updateOrderPopurByStageId(int stageId) throws Exception;
    /**
     * 更新手续费表
     * @param stageId
     * @throws Exception
     */
    void updateOrderFeeByStageId(int stageId) throws Exception;
    /**
     * 更新订单阶段明细表
     * @param stageId
     * @throws Exception
     */
    void updateOrderStageByStageId(int stageId) throws Exception;
    /**
     * 更新项目订单表
     * @param itemOrderId
     * @throws Exception
     */
    void updateOrderItemById(int itemOrderId) throws Exception;

    /**
     * 根据合同ID和当前阶段状态查询是否有下一个阶段，如果有就返回下一个阶段的信息，没有则返回空
     * @param param
     * @return
     * @throws Exception
     */
    Map findNextStageByContractId(Map param) throws Exception;


    /**
     * 根据ID修改阶段进行状态
     * @param param
     * @throws Exception
     */
    void updateItemStageStatusById(Map param) throws Exception;

    /**
     * 根据当前用户查询是否首次接包推广
     * @param presenter 艺术家用户ID
     * @return
     * @throws Exception
     */
    int findUserIspoReceiverByPresenter(String presenter) throws Exception;

    /**
     * 更新用户手续费数量
     * @param userId
     * @throws Exception
     */
    void updateUserFeeNumByUserId(String userId) throws Exception;

    /**
     * 插入手续费卡记录
     * @param param
     * @throws Exception
     */
    void insertUserFee(Map param) throws Exception;

    /**
     * 修改艺术家首次接包状态
     * @param artistUserId
     */
    void updateIspoReceiverByUserId(String artistUserId) throws Exception;


    /**
     * 根据阶段ID查询该项目是否是计件任务，如果是计件任务，那么就返回空
     * @param stageId
     * @return
     * @throws Exception
     */
    String findItemIdByStageId(String stageId) throws Exception;

    /**
     * 根据任务ID修改任务进度
     * @param item_id
     * @throws Exception
     */
    void updateCurrentProgressByTaskId(String item_id) throws Exception;

    /**
     * 根据任务ID查询该任务下所有订单是否已经全部完成
     * @param item_id
     * @return
     * @throws Exception
     */
    int findCountorderitemStatusByItemId(String item_id) throws Exception;

    /**
     * 根据任务ID修改任务进度评价
     * @param item_id
     * @throws Exception
     */
    void updateCurrentProgressByTaskId2(String item_id) throws Exception;
}
